def move 990
def bodya 989
def nrga 987
def nrgb 986
def bodyb 985

'(Excalibur)
def count 950
def spin 951
def count1 952
'------

def fighter 550
def fightertie 555
def tiestate 560
def tiecount 565
def statebeat 570
def distance 571

'ID gene - Endy
cond
*.robage 0 =
start
300 .bodya store
500 .nrga store
.thisgene .memloc store
100 .mkshell store
745 770 store
1 .fighter store
123 .fightertie store
.tie inc
stop

'memloc check
cond
*.memloc .thisgene !=
start
.thisgene .memloc store
stop

'Seed genes-------------

cond
*.statebeat 1 !=
start
1 .statebeat store
stop

cond
*.statebeat 1 =
*.numties 0 =
*.tiestate 0 >
*.fighter 1 != or
start
0 .tiestate store
0 .tiecount store
1 .fighter store
.statebeat dec
stop

cond
*.fighter 0 =
'*.shflav 0 =
start
*.fightertie .readtie store
*.trefxpos *.trefypos angle .setaim store
*.trefxpos *.xpos sub abs *.trefypos *.ypos sub abs pyth .distance store
stop

cond
*.shflav 0 !=
*.shflav -2 !=
*.fighter 0 =
start
0 .shflav store
-6 .shoot store
20 .shootval store
20 .mkshell store
*.shang .aimshoot store
99 .sharenrg store
.statebeat dec
stop

'I want to be a tie fighter
cond
*.fighter 1 =
*.eye5 20 >
*.refeye 0 =
*.refshoot 0 =
*.refpoison 0 =
*.reftie 0 =
*.refbody 200 <
*.numties 0 =
*.body 50 <  
*.robage 0 >
'*.pain 0 <=
*.statebeat 1 =
start
1 .tiestate store
*.fightertie .tie store
*.fightertie .readtie store
0 .fighter store
'*.tiepres .fightertie store
.statebeat dec
0 .up store
stop

cond
*.tiestate 1 =
*.statebeat 1 =
start
770 .tieloc store
745 .tieval store
*.fightertie .tienum store
.tiestate inc
.statebeat dec
40 .stifftie store
stop

cond
*.numties 0 >
*.tiestate 2 =
*.tiepres *.fightertie =
*.statebeat 1 =
start
.vshoot .tieloc store
1 .tieval store
*.fightertie .tienum store
.tiestate inc
.tiecount inc
.statebeat dec
stop

cond
*.fighter 0 =
*.tiestate 3 =
*.tiestate 5 <
*.statebeat 1 =
start
.fixpos .tieloc store
1 .tieval store
*.fightertie .tienum store
1 .fixpos store
statebeat dec
stop

cond
*.tiecount 20 =<
*.tiestate 3 =
start
.tiecount inc
stop

cond
*.tiestate 3 =
*.tiecount 19 =
start
0 .fixpos store
*.trefxpos *.trefypos angle .setaim store
.memloc .tieloc store
.shflav .tieval store
*.fightertie .tienum store
.statebeat dec
stop

cond
*.fighter 0 =
*.tiestate 3 =
*.tiecount 20 >=
*.statebeat 1 =
start
*.fightertie .tienum store
.tiestate inc
0 .tiecount store
1 .fixlen store
.statebeat dec
0 .fixpos store
stop

cond
*.fighter 0 =
*.tiestate 4 =
*.distance 100 <
*.fixed 1 !=
start
*.trefxpos *.trefypos angle .setaim store
1 .fixpos store
0 .fixlen store
*.fightertie .tienum store
.statebeat dec
stop

cond
*.fighter 0 =
*.tiestate 4 =
*.refbody 150 >
*.statebeat 1 =
*.body 100 <
*.trefnrg *.refnrg =
start
.fdbody .tieloc store
300 .tieval store
*.fightertie .tienum store
.statebeat dec
stop

cond
*.statebeat 1 =
*.fighter 0 =
*.tiestate 4 =
*.trefnrg 100 <
*.body 100 <
start
.statebeat dec
0 .sharenrg store
stop

cond
*.fighter 0 =
*.tiestate 4 =
*.trefnrg 150 >
*.trefnrg 350 <
*.statebeat 1 =
*.body 50 <
start
.statebeat dec
65 .sharenrg store
stop

cond
*.fighter 0 =
*.tiestate 4 =
*.trefnrg 400 >
*.statebeat 1 =
*.body 50 <
start
.statebeat dec
99 .sharenrg store
stop

cond
*.fighter 0 =
*.body 50 >
start
100 .fdbody store
stop

cond
*.fighter 0 =
*.tiestate 3 >=
*.pain 10 >   '--------------------------NEEDS CALIBRATION
start
770 .tieloc store
0 .tieval store
*.fightertie .tienum store
10 .tiestate store
.statebeat dec
stop

cond
*.fighter 0 =
*.trefnrg *.refnrg =
*.tiestate 4 =
*.memval -1 =
start
770 .tieloc store
0 .tieval store
*.fightertie .tienum store
10 .tiestate store
.statebeat dec
stop

cond
*.fighter 0 =
*.trefnrg *.refnrg =
*.tiestate 4 =
*.memval -6 =
start
770 .tieloc store
0 .tieval store
*.fightertie .tienum store
10 .tiestate store
.statebeat dec
stop

cond
*.fighter 0 =
*.trefnrg *.refnrg !=
*.refeye 0 !=
*.eye5 20 >
*.memval *.genes !=
*.myshoot *.refshoot !=
start
770 .tieloc store
0 .tieval store
*.fightertie .tienum store
10 .tiestate store
.statebeat dec
stop

cond
*.fighter 0 =
*.tiestate 10 =
start
*.fightertie .deltie store
0 .tiestate store
0 .tiecount store
1 .fighter store
341 .aimdx store  '------------- Maybe not
40 .up store      '------------- Maybe not
.statebeat dec
stop

cond
*.tiepres *.fightertie !=
'*.tiestate 0 >
start
*.tiepres .deltie store
stop

cond
*.fighter 1 !=
*.nrg 5000 >     '-------------------------------NEEDS CALIBRATION
start
770 .tieloc store
0 .tieval store
*.fightertie .tienum store
10 .tiestate store
.statebeat dec
stop


'------------------------------ Bubbles

'eye4
cond
*.fighter 1 =
*.paralyzed 0 =
*.poisoned 0 =
*.eye5 0 =
*.eye4 0 >
*.eye4 *.eye3 >=
*.eye4 *.eye2 >=
*.eye4 *.eye1 >=
*.eye4 *.eye6 >=
*.eye4 *.eye7 >=
*.eye4 *.eye8 >=
*.eye4 *.eye9 >=
start
*.aim 35 add .setaim *.fighter mult store
stop

'eye6
cond
*.fighter 1 =
*.paralyzed 0 =
*.poisoned 0 =
*.eye5 0 =
*.eye6 0 >
*.eye6 *.eye4 >
*.eye6 *.eye7 >=
*.eye6 *.eye8 >=
*.eye6 *.eye9 >=
*.eye6 *.eye1 >=
*.eye6 *.eye2 >=
*.eye6 *.eye3 >=
start
*.aim -35 add .setaim *.fighter mult store
stop

'eye3
cond
*.fighter 1 =
*.paralyzed 0 =
*.poisoned 0 =
*.eye5 0 =
*.eye3 0 >
*.eye3 *.eye4 >
*.eye3 *.eye6 >
*.eye3 *.eye2 >=
*.eye3 *.eye1 >=
*.eye3 *.eye7 >=
*.eye3 *.eye8 >=
*.eye3 *.eye9 >=
start
*.aim 70 add .setaim *.fighter mult store
stop

'eye7
cond
*.fighter 1 =
*.paralyzed 0 =
*.poisoned 0 =
*.eye7 0 >
*.eye5 0 =
*.eye7 *.eye4 >
*.eye7 *.eye6 >
*.eye7 *.eye3 >
*.eye7 *.eye2 >=
*.eye7 *.eye1 >=
*.eye7 *.eye8 >=
*.eye7 *.eye9 >=
start
*.aim -70 add .setaim *.fighter mult store
stop

'eye2
cond
*.fighter 1 =
*.paralyzed 0 =
*.poisoned 0 =
*.eye2 0 >
*.eye5 0 =
*.eye2 *.eye4 >
*.eye2 *.eye3 >
*.eye2 *.eye7 >
*.eye2 *.eye6 >
*.eye2 *.eye1 >=
*.eye2 *.eye9 >=
*.eye2 *.eye8 >=
start
*.aim 105 add .setaim *.fighter mult store
stop

'eye8
cond
*.fighter 1 =
*.paralyzed 0 =
*.poisoned 0 =
*.eye8 0 >
*.eye5 0 =
*.eye8 *.eye2 >
*.eye8 *.eye3 >
*.eye8 *.eye4 >
*.eye8 *.eye7 >
*.eye8 *.eye6 >
*.eye8 *.eye1 >=
*.eye8 *.eye9 >=
start
*.aim -105 add .setaim *.fighter mult store
stop

'eye1
cond
*.fighter 1 =
*.paralyzed 0 =
*.poisoned 0 =
*.eye5 0 =
*.eye1 0 >
*.eye1 *.eye2 >
*.eye1 *.eye3 >
*.eye1 *.eye4 >
*.eye1 *.eye6 >
*.eye1 *.eye7 >
*.eye1 *.eye8 >
*.eye1 *.eye9 >=
start
*.aim 140 add .setaim *.fighter mult store
stop

'eye9
cond
*.fighter 1 =
*.paralyzed 0 =
*.poisoned 0 =
*.eye5 0 =
*.eye9 0 >
*.eye9 *.eye1 >
*.eye9 *.eye2 >
*.eye9 *.eye8 >
*.eye9 *.eye7 >
*.eye9 *.eye6 >
*.eye9 *.eye4 >
*.eye9 *.eye3 >
start
*.aim -140 add .setaim *.fighter mult store
stop

'rotate if all eyes empty and not being shot
cond
*.fighter 1 =
*.paralyzed 0 =
*.poisoned 0 =
*.eye5 0 =
*.eye4 0 =
*.eye3 0 =
*.eye2 0 =
*.eye1 0 =
*.eye6 0 =
*.eye7 0 =
*.eye8 0 =
*.eye9 0 =
*.shflav 0 =
*.shflav -2 = or
start
*.aim 280 add .setaim *.fighter mult store
stop

'follow friend if not being shot
cond
*.fighter 1 =
*.paralyzed 0 =
*.poisoned 0 =
*.in1 0 !=
*.in2 0 != or
*.fighter mult *.memval *.genes =
*.refage 0 >
*.eye5 0 >
*.shflav 0 =
*.shflav -2 = or
start
*.in1 *.in2 angle .setaim *.fighter mult  store
*.in1 *.in2 dist 500 div *.maxvel mult *.refvel add 0 floor *.maxvel ceil .up *.fighter mult  store
*.veldx .sx store
stop

'avoid friend when not getting shot
cond
*.fighter 1 =
*.paralyzed 0 =
*.poisoned 0 =
*.in1 0 =
*.in2 0 = and
*.memval *.genes =
*.refage 0 >
*.eye5 0 >
*.shflav 0 =
*.shflav -2 = or
start
*.refxpos *.refypos angle 280 add .setaim *.fighter mult store
stop

'if see friend but getting shot
cond
*.fighter 1 =
*.paralyzed 0 =
*.poisoned 0 =
*.in1 0 =
*.in2 0 = and
*.memval *.genes =
*.refage 0 >
*.eye5 0 >
*.shflav 0 !=
*.shflav -2 != and
start
40 .up store
*.shang 682 add .setaim *.fighter mult store
0 .shflav *.fighter mult store
-1 .shoot store
*.shang *.aim add .aimshoot *.fighter mult store
stop

'all eyes empty but being shot
cond
*.fighter 1 =
*.paralyzed 0 =
*.poisoned 0 =
*.eye5 0 =
*.eye4 0 =
*.eye3 0 =
*.eye2 0 =
*.eye1 0 =
*.eye6 0 =
*.eye7 0 =
*.eye8 0 =
*.eye9 0 =
*.shflav 0 !=
*.shflav -2 != and
start
40 .up *.fighter mult store
*.shang .setaim *.fighter mult store
0 .shflav *.fighter mult store
-1 .shoot store
*.shang *.aim add .aimshoot *.fighter mult store
stop

'follow friend if not being shot
cond
*.fighter 1 =
*.paralyzed 0 =
*.poisoned 0 =
*.in1 0 !=
*.in2 0 != or
*.memval *.genes =
*.refage 0 >
*.eye5 0 >
*.shflav 0 =
*.shflav -2 = or
start
*.in1 *.in2 angle .setaim *.fighter mult store
*.in1 *.in2 dist 500 div *.maxvel mult *.refvel add 0 floor *.maxvel ceil .up *.fighter mult store
*.veldx .sx *.fighter mult store
stop

'don't follow friend if getting shot
cond
*.fighter 1 =
*.paralyzed 0 =
*.poisoned 0 =
*.in1 0 !=
*.in2 0 != or
*.memval *.genes =
*.refage 0 >
*.eye5 0 >
*.shflav 0 !=
*.shflav -2 != and
start
*.shang .setaim *.fighter mult store
0 .shflav *.fighter mult store
-1 .shoot store
*.shang *.aim add .aimshoot *.fighter mult store
40 .up store
stop

'target and shoot
cond
*.fighter 1 =
*.paralyzed 0 =
*.poisoned 0 =
*.robage 1 >
*.eye5 9 >
*.memval *.genes !=
*.refshoot *.myshoot !=
*.refeye *.myeye != or
'*.numties 0 =
start
*.refxpos *.refypos angle *.aim sub .aimshoot *.fighter mult store
-6 .shoot *.fighter mult store
*.nrg 32 div .shootval *.fighter mult store
stop

cond
*.venom 100 <
start
100 *.venom sub 0 floor 100 ceil .strvenom store
stop


'-------------------Excalibur

cond
*.robage 0 =
start
'955 4 rnd add .memloc store
'1904 955 store
'1904 956 store
'1904 957 store
'1904 958 store
'1904 959 store
1 .tie store
0 .out1 store
0 .aimsx store
.shoot .vloc store
.shoot .ploc store
100 .mkshell store
100 .strpoison store
stop

cond
*.robage 1 =
*.fighter 1 =
start
1 .deltie store
314 .aimsx store
stop


'-------------------------------------- Venom (Excalibur)

cond
*.count 0 >
*.fighter 1 =
start
.count dec
stop

cond
*.fighter 1 =
'*.memval 1904 !=
*.memval *.genes !=
*.refshoot *.myshoot !=
*.refeye *.myeye != or
*.eye5 20 >
' *.refpoison 0 =
*.count 0 =
*.refeye 0 >
start
.shoot .vloc *.fighter mult store
-3 .shoot *.fighter mult store
-2 .venval *.fighter mult store
50 .shootval *.fighter mult store
5 .count *.fighter mult store
stop

cond
*.fighter 1 =
'*.memval 1904 !=
*.memval *.genes !=
*.refshoot *.myshoot !=
*.refeye *.myeye != or
*.eye5 20 >
*.count 0 =
*.refeye 0 >
*.refshell 5 >
start
.mkshell .vloc *.fighter mult store
-3 .shoot *.fighter mult store
-200 .venval *.fighter mult store
50 .shootval *.fighter mult store
0 .count *.fighter mult store
stop
'---------------------- end venom

'****************
'* Adaptive Armour *
'****************
'1 poison
'2 shell
'3 Poison + Shell

cond
*.in1 *.out1 !=
*.in1 0 !=
*.out1 3 <
*.memval 1904 =
start
*.in1 .out1 store
stop

cond
*.shflav -1 =
*.shflav 0 > or
*.out1 2 <
start
1 .out1 store
stop

cond
*.shflav -1 =
*.shflav 0 > or
*.out1 2 =
start
3 .out1 store
stop

cond
*.shflav -6 =
*.shflav -3 = or
*.out1 0 <
start
2 .out1 store
stop

cond
*.shflav -6 =
*.shflav -3 = or
*.out1 1 =
start
3 .out1 store
stop

cond
*.nrg 500 >
*.poison 500 <
*.out1 1 =
*.out1 3 = or
start
100 .strpoison store
stop

cond
*.nrg 500 >
*.shell 450 <
*.out1 1 >
start
500 *.shell sub .mkshell store
stop

cond
*.numties 0 >
*.robage 10 >
*.fighter 1 =
start
*.tiepres .tienum store
.tieval .tieloc store
3000 .tieval store
*.tiepres .deltie store
*.tieval 3000 div .tieloc store
.sharewaste inc
stop


'---------------------------------------

'move and communicate
cond
*.fighter 1 =
*.paralyzed 0 =
*.poisoned 0 =
*.robage 1 >
*.eye5 0 >
*.memval *.genes !=
*.numties 0 =
*.refshoot *.myshoot !=
*.refeye *.myeye != or
start
*.refxpos *.refypos angle .setaim *.fighter mult store
*.refxpos *.refypos dist 500 div *.maxvel mult *.refvel add 0 floor *.maxvel ceil .up *.fighter mult store
*.veldx .sx *.fighter mult store
*.refxpos .out1 store
*.refypos .out2 store
stop

'refresh communication or hide veg location
cond
*.paralyzed 0 =
*.poisoned 0 =
*.refeye 0 =
*.eye5 0 = or
*.memval *.genes =
*.eye5 0 > and
*.in1 0 = and
*.in2 0 = and or
*.out1 0 !=
*.out2 0 != or
start
0 .out1 store
0 .out2 store
stop

'turn back after repro
cond
*.paralyzed 0 =
*.poisoned 0 =
*.move 0 !=
*.fighter 1 =
start
*.aim 628 add .setaim store
.move dec
1 .deltie store
0 .shoot store
stop

'baby avoids mum
cond
*.fighter 1 =
*.paralyzed 0 =
*.poisoned 0 =
*.robage 1 =
*.numties 0 >
*.memval *.genes = or
start
*.aim 280 add .setaim store
0 .shoot store
stop

'repro
cond
*.fighter 1 =
*.paralyzed 0 =
*.poisoned 0 =
*.eye5 0 =
*.move 0 =
*.body *.bodya >
*.nrg *.nrga >
start
25 .repro store
*.aim 628 add .setaim store
1 .move store
*.bodya 10 div *.bodya add 30000 ceil .bodya store
*.nrga 10 div *.nrga add 30000 ceil .nrga store
stop

'make body
cond
*.paralyzed 0 =
*.poisoned 0 =
*.nrg *.nrga >
*.body 3190 <
start
100 .strbody *.fighter mult store
stop

'use body
cond
*.paralyzed 0 =
*.poisoned 0 =
*.nrg *.nrgb <
*.body 11 >
start
100 .fdbody *.fighter mult store
stop

'make more shell
cond
*.fighter 1 =
*.paralyzed 0 =
*.poisoned 0 =
*.shell 100 <
*.nrg 500 > and
*.shflav -6 = or
*.shflav -3 = or
start
50 .mkshell store
0 .shflav *.fighter mult store
stop

'poop
cond
*.fighter 1 =
*.paralyzed 0 =
*.poisoned 0 =
*.waste 50 >
*.memval *.genes !=
start
-4 .shoot store
*.waste .shootval store
stop

'Death by Baby!
cond
*.fighter 1 =
*.poisoned 0 !=
*.paralyzed 0 != or
start
100 .repro store
*.aim 280 add .setaim store
999 .out3 store
stop

'delete tie
cond
*.numties 0 >
'*.tiefighter 1 !=
*.tiecount 0 = and
*.fightertie *.tiepres != or
*.fighter 1 =
*.tiestate 0 =
start
*.tiepres .deltie store
stop

cond
*770 745 !=
start
*.thisgene .mkvirus store
9000 .vshoot store
'*.nrg 400 sub sgn 50 mult .repro store
'*.body 100 sub sgn 50 mult .repro store
50 .repro store
stop

cond
*.vtimer 0 =
*.genes 50 <
start
' Make viruses
*.thisgene 1 sub .mkvirus store
stop

cond
*.vtimer 1 =
*.nrg 800 >
start
100 .vshoot store
stop

cond
*.sexrepro 0 !=
*.mrepro 0 != or
start
0 .repro store
0 .sexrepro store
0 .mrepro store
stop

cond
*.delgene 0 !=
*.shoot -2 = or
start
0 .delgene store
0 .shoot store
stop

cond
*.fighter 1 =
start
.fixpos *.fixed mult dec 'anti fixpos by Elite
stop

cond
*.repro 25 !=
*.repro 0 !=
*.repro 100 !=
start
0 .repro store
stop

cond
*.vshoot 101 >
*.vtimer 15 <
start
1 .vshoot store
100 repro store
stop

'ID gene - Endy
cond
start
*.nrga 2 div .nrgb store
' little constant viral defense gene doubles as ID gene
*.genes .delgene
' .fixpos *.fixed mult dec 'anti fixpos by Elite
*.thisgene *.genes sub dup div
mult *.robage sgn mult store
.genes inc
stop
end